package es.ikex.servlet;

import java.io.IOException;


import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import es.ikex.dao.LineaPedidosDao;
import es.ikex.dao.PedidosDao;
import es.ikex.dao.ProductosDAO;


public class ProcesarCompra extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		String estadoPedido = "P";
		ProductosDAO producto = new ProductosDAO();
		Cookie cookie[] = request.getCookies();
		float baseImponible = 0f;
		String[] total = {"","",""};
		for(int i = 0; i < cookie.length; i++){
			if(!cookie[i].getName().equals("JSESSIONID") && !cookie[i].getName().equals("politicaCookies")){
				if(!cookie[i].getName().equals("precio-iva-gastos")){
					baseImponible += producto.getBaseImponible(cookie[i].getName(), Integer.parseInt(cookie[i].getValue()));
				}else{
					total = cookie[i].getValue().split("::");
				}
			}
		}
		String error = "";
		int codigo = 0;
		float gastosEnvios = 0f;
		int iva = 0;
		String codigoPostal = request.getParameter("codigoPostal");
		try{
			codigo = Integer.parseInt(request.getParameter("codigo"));
			gastosEnvios = Float.parseFloat(total[2]);
			if(total[1].indexOf('.') != -1)
				total[1] = total[1].substring(0, total[1].indexOf('.'));			
				
			iva = Integer.parseInt(total[1]);
		}
		catch(NumberFormatException e){
			error = e.getMessage();
			e.printStackTrace();
		}
		String direccion = request.getParameter("direccion");
		PedidosDao pedido = new PedidosDao();
		int numeroPedido = pedido.crearPedido( estadoPedido, codigo, baseImponible, gastosEnvios, iva, direccion, codigoPostal);
		
		if(error == ""){
			String productos = "";
			for(int i = 0; i < cookie.length; i++){
				if(!cookie[i].getName().equals("JSESSIONID")){
					productos = productos + cookie[i].getName() +":"+ cookie[i].getValue() + ";";
				}
			}
			LineaPedidosDao lineaPedido = new LineaPedidosDao();
			lineaPedido.introducirPedidos(numeroPedido, productos);
			request.getRequestDispatcher("/eliminarCookie").forward(request, response);
		}else{
			System.out.println(error);
			request.getRequestDispatcher("jsp/confirmarDatos").forward(request, response);
		}
	}

}
